import { message } from 'antd';
import axios from 'axios';

// const codeMessage = {
//   200: '服务器成功返回请求的数据。',
//   201: '新建或修改数据成功。',
//   202: '一个请求已经进入后台排队（异步任务）。',
//   204: '删除数据成功。',
//   400: '发出的请求有错误，服务器没有进行新建或修改数据的操作。',
//   401: '用户没有权限（令牌、用户名、密码错误）。',
//   403: '用户得到授权，但是访问是被禁止的。',
//   404: '发出的请求针对的是不存在的记录，服务器没有进行操作。',
//   406: '请求的格式不可得。',
//   410: '请求的资源被永久删除，且不会再得到的。',
//   422: '当创建一个对象时，发生一个验证错误。',
//   500: '服务器发生错误，请检查服务器。',
//   502: '网关错误。',
//   503: '服务不可用，服务器暂时过载或维护。',
//   504: '网关超时。',
// };
// http状态码错误处理
const errorHandler = (error:any) => {
  message.error(`接口错误：${error}`);
};
// 获取baseUrl，
let baseUrl:string = '';
switch (process.env.REACT_APP_ENV) {
  case 'staging':
    baseUrl = 'https://sth-api.leyanbot.com/eci-thunder-api';
    break;

  default:
    baseUrl = '/api/';
    break;
}
const httpRequest = axios.create({
  baseURL: baseUrl,
  timeout: 10000,
  headers: {
    'Content-Type': 'application/json;charset=utf-8',
  },
});
// 添加请求拦截器
httpRequest.interceptors.request.use((config) => {
  // 在发送请求之前做些什么
  return config;
}, (error) => {
  // 对请求错误做些什么
  return Promise.reject(error);
});
// 添加响应拦截器
httpRequest.interceptors.response.use((response) => {
  return response;
}, (error) => {
  // 对响应错误做点什么
  if (error) { errorHandler(error); }
  return Promise.reject(error);
});

async function request(url:string, options?:any) {
  const object:any = {
    method: options?.method || 'GET',
    url,
    headers: {
      'Content-Type': 'application/json;charset=utf-8',
    },
    params: options?.data || {},
  };
  if (options?.method === 'POST') {
    object.data = object.params;
    delete object.params;
  }
  const response = await httpRequest(object);
  // 对响应数据做点什么
  if (response) { return response.data; }
  return `异常:${response}`;
}
export default request;
